<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>BrainTrain: BrainTrain Kurzanleitung</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">BrainTrain
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('index.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">BrainTrain Kurzanleitung </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>For english readers:<br />
 This OSG-Demo was done as part of the computer graphics I 2014 lecture of the University of Applied Sciences and Arts Hanover. This page is a short description of the project which was a requirement for passing the lecture.<br />
 Everything written here can either also be read in the source documentation or experienced by oneself by trying out this project (look for the hidden room!)<br />
 Everything here uses the GNU Public License. Use as you want, but give us credit =)!<br />
 <br />
 Das Projekt "BrainTrain" wurde im Rahmen der Vorlesung CG1 an der HS Hannover im Sommersemester 2014 erstellt.<br />
 Beteiligt waren hierbei: Jonathan Spielvogel, Marcel Felix, Gleb Ostrowski, Phillip Sauer und Sebastian Huettermann.</p>
<h1><a class="anchor" id="Die"></a>
Szene</h1>
<p>Ziel war es eine alte, unfertige, verfallene U-Bahn-Station zu entwerfen, in der der "Spieler" sich im First-Person-Shooter-Stil frei bewegen kann. Der Spieler startet am Kopf eines kleinen Niederganges, bestehend aus Treppe mit Gelaender und Rolltreppe. Direkt hinter der Startposition des Spielers befindet sich ein "geheimer Raum" (hier kann durch die Wand gelaufen werden). Der untere Teil besteht aus einem einzelnen, geschwungenen Bahnsteig (mit einem Gleis). Auf dem Bahnsteig selber befinden sich diverse Modelle, z.B: Kisten, ein altes Tickethaeuschen mit einer Folie darueber, Oelfaesser mit einer sowjetischen Flagge darueber, einem Fliesenspiegel und viele mehr. Es gibt also viel zu entdecken!</p>
<p>Nicht in Blender wurde hierbei folgendes erstellt:</p><ul>
<li>Die Sitzbaenke wurden in OSG modelliert, materialisiert und texturiert</li>
<li>Die Bierflaschen sowie die Vase und Blume (auf dem Tickethaeuschen) und Figuren im geheimen Raum wurden als Rotationskoerper realisiert.<ul>
<li>Die Bierflaschen wurdem zudem mit einem Partikelsystem aus Blender (zufaellig) im Raum verteilt. Die primaere Farbgebung (der "Cartoon Effekt" inklusive Cel Shading und Nebel) wurde hierbei ueber eigene Shader implementiert. Zudem verfuegt der Spieler ueber ein "WaffenHUD", das eine der weiteren Kamera darstellt.</li>
</ul>
</li>
</ul>
<h1><a class="anchor" id="Animationen"></a>
Animationen</h1>
<p>Mehrere Dinge sind animiert: Zum einen faehrt in regelmaessigen Abstaenden ein Zug das Gleis entlang. Diese Animation wurde als Animation Path in OSG realisiert. Und zum anderen weht die grosse, haengende Flagge "im Wind". Diese Animation wurde ueber den Shader realisiert. Ebenso ueber die Shader sind die Animationen der Figuren im geheimen Raum realisiert.</p>
<h1><a class="anchor" id="Interaktive"></a>
Elemente</h1>
<p>In der gesamten Szene kann mit einigen Elementen interagiert werden:</p><ul>
<li>Am rechten Ende des Bahnhofs kann von einer Kiste eine "kaputte Portalgun" mittels Links-Klick aufgehoben werden. Sobald der Spieler mehr als eine Waffe traegt kann diese mittels Scrollen des Mausrades gewechselt werden.</li>
<li>Einige (drei) der herumliegenden Bierflaschen koennen getrunken werden. Hierzu muss der Spieler sich im geduckten Modus der Flasche naehern und kann diese - sofern der entsprechende Texthinweis erscheint - mit einem Links-Klick trinken. Hierbei handelt es sich um einen sehr starken Alkohol, der zwar schnell wirkt, seine Wirkung aber auch schnell wieder verliert.<ul>
<li>Aus Sicherheitsgruenden darf leider nicht verraten werden, um welche Flaschen es sich handelt.</li>
</ul>
</li>
<li>Im Geheimraum am oberen Ende der Treppe stehen einige farbige Figuren. Naehert sich der Spieler diesen, so kann er mit einem Links-Klick u.a. Shader-Farben wechseln. Probieren Sie es aus!</li>
</ul>
<h1><a class="anchor" id="Die"></a>
Szene</h1>
<p>Die Bewegung in der Szene erfolgt im gewohnten FPS Stil. Hierbei ist sowohl eine Kollisionserkennung als auch eine "Clamp to Ground" Funktionalitaet implementiert (so dass der Spieler auf dem Boden laeuft). Die Tastaturbelegung ist hierbei die folgende:</p><ul>
<li><b>W</b> Bewegung Vorwaerts, <b>S</b> Bewegung Rueckwaerts, <b>A</b> Nach links bewegen (nicht drehen), <b>D</b> Nach rechts bewegen (nicht drehen)</li>
<li><b>Maus:</b> Umschauen</li>
<li><b>Mausklick</b> links zur Interaktion (es erscheint immer ein Text der Interaktion "ankuendigt")</li>
<li><b>Leerstaste:</b> Springen, <b>L-Shift</b>: Sprinten, <b>L-Strg</b>: Gehen (langsamer gehen), <b>X:</b> Ducken (um z.B. an Bierflaschen heranzukommen)</li>
<li><b>Mausrad</b> <b>scrollen:</b> Wechseln der Waffe (sofern mehr als eine getragen wird) Mit der Taste <b>F</b> kann in den Flugmodus gewechselt werden. In diesem ist die Kollisionserkennung nicht mehr aktiv. Zu der o.g. Steuerung kommt Folgendes hinzu:</li>
<li><b>Q</b> senkrecht nach unten fliegen, <b>E</b> senkrecht nach oben fliegen</li>
</ul>
<p>Weiteres:</p><ul>
<li><b>C</b> aktiviert/deaktiviert den Polygon-Modus</li>
<li><b>L-Shift</b> <b>+</b> <b>1</b> wechselt durch die Shader-Modi, die normalerweise im Geheimraum umgeschaltet werden koennen</li>
</ul>
<h1><a class="anchor" id="Quellenverzeichnis"></a>
Quellenverzeichnis</h1>
<p>Sofern nicht anders dokumentiert (z.B. im Quellcode), handelt es sich bei allen Entwicklungen um Eigenentwicklungen. Insbesondere sind saemtliche Modelle Eigenentwicklungen.<br />
 Texturen kommen hierbei geschlossen von<br />
 <a href="http://www.cgtextures.com/">http://www.cgtextures.com/</a> <br />
 Ausnahmen sind hierbei:<br />
 UDSSR Flagge (auf den alten Oelfaessern liegend)<br />
 <a href="http://freestock.ca/soviet_union_ussr_grunge_flag_sjpg1191.jpg">http://freestock.ca/soviet_union_ussr_grunge_flag_sjpg1191.jpg</a> <br />
 Zuletzt geprueft/gesehen: 19.06.2014<br />
 Flagge mit Einhorn (in der Ecke haengend)<br />
 <a href="http://wallpoper.com/images/00/24/35/71/communism-soviet_00243571.jpg">http://wallpoper.com/images/00/24/35/71/communism-soviet_00243571.jpg</a> <br />
 Zuletzt geprueft/gesehen: 19.06.2014<br />
</p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Thu Jul 17 2014 01:40:33 for BrainTrain by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.7 </li>
  </ul>
</div>
</body>
</html>
